Fuzzing refers to a testing technique that consists of presenting a software application with simulated inputs to facilitate detection of vulnerabilities and programming bugs by purposely trying to make the application fail. For example, target content files, pages, and/or documents for an application, such as a browser or other content rendering application, may be used to test functionality of the application. In the case of a browser, this may involve building a Document Object Model (DOM) of a target page and making calls to various DOM interfaces of the browser according to the page DOM.
Traditionally, fuzzing code/logic configured to handle testing is hardcoded directly with a target page (e.g., in a single file). This may make it time consuming and expensive to create and maintain a collection of target files suitable for testing an application and/or to customize fuzzing for different scenarios. Moreover, traditional fuzzing techniques are not typically focused upon comprehensive analysis of an application and therefore may be limited to testing a small subset of functionality for an application. As such, developers are unable to rely upon traditional fuzzing techniques to ensure that their applications are full tested.